package com.tzu.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期与时间工具类<br>
 * <br>
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <br>
 * 描述 <br>
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br>
 * G Era 标志符 Text AD <br>
 * y 年 Year 1996; 96 <br>
 * M 年中的月份 Month July; Jul; 07 <br>
 * w 年中的周数 Number 27 <br>
 * W 月份中的周数 Number 2 <br>
 * D 年中的天数 Number 189 <br>
 * d 月份中的天数 Number 10 <br>
 * F 月份中的星期 Number 2 <br>
 * E 星期中的天数 Text Tuesday; Tue <br>
 * a Am/pm 标记 Text PM <br>
 * H 一天中的小时数（0-23） Number 0 <br>
 * k 一天中的小时数（1-24） Number 24 <br>
 * K am/pm 中的小时数（0-11） Number 0 <br>
 * h am/pm 中的小时数（1-12） Number 12 <br>
 * m 小时中的分钟数 Number 30 <br>
 * s 分钟中的秒数 Number 55 <br>
 * S 毫秒数 Number 978 <br>
 * z 时区 General time zone Pacific Standard Time; PST; GMT-08:00 <br>
 * Z 时区 RFC 822 time zone -0800 <br>
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br>
 */
public final class DateTools {

    /**
     * 格式化类型：年月日（yyyy-MM-dd）
     */
    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    /**
     * 格式化类型：年月日（yyyyMMdd）
     */
    public static final String YYYYMMDD = "yyyyMMdd";
    /**
     * 格式化类型：年月日时分秒（yyyy-MM-dd HH:mm:ss）
     */
    public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    /**
     * 格式化类型：年月日时分秒（yyyyMMddHHmmss）
     */
    public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";


    private DateTools() {
    }

    /**
     * 获取格式化日期字符串
     *
     * @param date 日期对象
     * @param type 格式化方式，参考：DateTools的静态常量
     * @author BraveHeartWzm
     */
    public static String getFormatDate(Date date, String type) {
        String ret = null;
        if (null == date) {
            return null;
        } else {
            ret = new SimpleDateFormat(type).format(date);
        }
        return ret;
    }

    /**
     * 获取当前的格式化日期字符串
     *
     * @param type 格式化方式，参考：DateTools的静态常量
     * @author BraveHeartWzm
     */
    public static String getCurrentFormatDate(String type) {
        return getFormatDate(new Date(), type);
    }

    /**
     * 字符串转换日期
     */
    public static Date toDate(String dateStr, String type) {
        SimpleDateFormat format = new SimpleDateFormat(type);
        try {
            return format.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

}
